﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

//	int main() {
//
//	
//	printf("hello world");
//	return 0;//关于printf的应用就是输出打印一系列东西//printf就是format格式化输出//这个printf函数是一个库函数已经保存在头文件中
//

//关于占位符
//int main()
//{
//	printf("我有%d个苹果", 3);//这个3就是代替%d的位置，而%d就是占位符中的一种，还有%s输出的是字符串，占位符的一般格式就是一个百分号后面加上他的数字类型，比如整数或者字符串
//	return 0;
//int main()
//{
//	printf("%s有%d个苹果", "zhangshan", 3);
//	return 0;
////还有其他的占位符，比较常用的有%c字符型%d整形%f浮点型%hd短整型等等%x是十六进制，还有前面我们遇到的%zd是size_t是计算字符长度的strlen函数
//
//}
////printf输出可以限定宽度
//int main()
//{
//	printf("%5d", 345);//5d是表示输出有五位数，一般是右对齐所以输出有5个空格
//	//如果希望输出是左对齐则在d前面加上一个负号
//	return 0;
////}
//int main()
//{
//	printf("%-5d", 567);
//	return 0;
//}
//关于小数
//int main()
//{
//	printf("%12f", 123.45);//%f一般默认小数点后面有六位数，这次要输出12位数，同理右对齐，前面有空格，其中小数点也算是一个位数
//	return 0;
//}
//显示正负号
//int main()
//{
//	printf("%+d", -8);//输出-8，所以要显示符号，要在D前面加上正号
//	printf("%d", 8);
//	return 0;
//}
//限定小数位数
//int main()
//{
//	printf("%.2f", 12.658);//输出12.66，它会自动四舍五入
//	return 0;
//
////}
//int main()
//{
//	printf("%6.2f", 12.658);//与前面的空格结合后使用，则有前面空一格
//	return 0;
//
//}
//关于输出是字符串
//int main()
//{
//	printf("%8.5s", "audbczic");//输出前五位，还要考虑8空格
//	return 0;
//
//}

//int main() {
//
//
//	printf("helli world\n");
//	return 0;//关于printf的应用就是输出打印一系列东西
//
//}

//printf()参数与占位符是一一对应的关系，如果有n个占位符，printf（）参数就应该有n+1个。如果参数个数少于对应的占位符，printf()随便输出任意值
//int main()
//{
//	printf("%d%d\n", 12, 13);
//	printf("%d%d\n", 2, 3);
//	return 0;
//
//
////}
// 
//scanf的用法：
//int main()
//{
//	int flag = 0;
//	scanf_s("%d", &flag);//输入//&是取地址符号，意思是scanf函数中占位符的后边的参数需要的是地址，取出地址
////	printf("%d", flag);//输出
////	return 0;
////
////
//int main()
//{
//	int x;
//	float y;
//	scanf("%d", &x);//输入13.234# 0
//	printf("%d\n", x);//整形只读到前面13
//	scanf("%d", &y);
//	printf("%f\n", y);//浮点型会乱码、、浮点型在代码中有时候不能精确
//	return 0;
//
//关于scanf的占位符说法，特别的，出来%c以为，其他占位符都起到自动忽略起首空白字符，如果要让%c强制忽略则在百分号c前面弄一个空格
//}
//int main()
//{
//	char ch;
//		scanf(" %c", &ch);
//	printf("%c", ch);
//}
//特别说明%s，他的规则是从第一个非空白字符开始读起，遇到空白字符（空格，制表符，换行符）为止，同时，scanf将字符串读入字符数组时不会检测字符是否已经超过字符数组，会可能超过字符数组的边界，所以要进行限制
int main()
{
	char arr[5];
		scanf("%4s", arr);//表示数组最多读取4个字符,不然其他的会报错
		printf("%s", arr);
		return 0;


}
//关于scanf的返回值
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	int d = 0;
//	int ret = scanf("%d %d %d %d", &a, &b, &c, &d);//scanf有了返回值，就没有警告了，因为这个警告vs也会认为scanf不安全
//	printf("a=%d b=%d c=%d d=%d", a, b, c, d);//scanf的返回值也会被用来做一些数学问题解决
//	printf("ret=%d", ret);//值得注意的是当scanf中输入有空格就不要有逗号，不然就会读不出来，导致scanf返回值与预期不匹配
// 
//	return 0;//还有输入的值和scanf中的占位符个数不匹配的，scanf后面返回值是输入的几个值的个数，其他参数为0
//int main()
//{
//	int year = 0;
//	int month = 0;
//	int day = 0;
//	scanf("%d-%d-%d", &year, &month, &day);
//	printf("%d %d %d\n", year, month, day);
//	return 0;
//
//
////}
//int main()
//{
//	int year = 0;
//	int month = 0;
//	int day = 0;
//	scanf("%d%*c%d%*c%d", &year, &month, &day);//赋值运算符，就是可以是赋值时任意使输出成为printf想要的结果，格式是在两个百分号d之间加上%*c
//	printf("%d %d %d\n", year, month, day);
//	return 0;
//
//
//}//一般我们定义变量的时候我们要习惯初始化，就是一般把变量赋值为0；
